#include "FunctionFactory.hpp"
#include "OperatorFunctionCollection.hpp"
#include "MathFunctionCollection.hpp"
#include "StringFunctionCollection.hpp"
#include "VarArgFunctionCollection.hpp"

FunctionCollection * FunctionCollection::head = 0;

static OperatorFunctionCollection c1;
static MathFunctionCollection c2;
static StringFunctionCollection c3;
static VarArgFunctionCollection c4;

//TODO: implement FormatFunctionCollection
/*
str str(bool val);
str str(int val);
str str(int val, int base);
str str(int val, int base, bool upper);
str str(real val);
str str(real val, str fmt);
str str(real val, int prec);
str str(real val, str fmt, int prec);

str fmt(bool val)
str fmt(bool val, int fieldWidth);
str fmt(bool val, int fieldWidth, str padding);

str fmt(str val)
str fmt(str val, int fieldWidth);
str fmt(str val, int fieldWidth, str padding);

str fmt(int val)
str fmt(int val, int fieldWidth);
str fmt(int val, int fieldWidth, str padding);
str fmt(int val, int fieldWidth, int base);
str fmt(int val, int fieldWidth, int base, str padding);
str fmt(int val, int fieldWidth, int base, bool upper);
str fmt(int val, int fieldWidth, int base, bool upper, str padding);

str fmt(real val)
str fmt(real val, int fieldWidth);
str fmt(real val, int fieldWidth, str padding);
str fmt(real val, int fieldWidth, int prec);
str fmt(real val, int fieldWidth, int prec, str padding);
str fmt(real val, int fieldWidth, str format, str padding);
str fmt(real val, int fieldWidth, str format, int prec);
str fmt(real val, int fieldWidth, str format, int prec, str padding);
*/
